package com.cutJar.core;

import java.io.BufferedWriter;

import com.cutJar.Exception.ResourceNullException;
import com.cutJar.listener.CutListener;

/**
 * <b>加工class文本抽象父类</b>
 * <p>
 * 描述:<br>
 * 
 * @author 威 
 * <br>2018年3月31日 下午5:15:19 
 * @since 1.0
 */
public abstract class AbstractMachining {
	protected String dectoryName;		//剪切的jar包的文件夹名称
	protected int allCount = 0; 		//所有个数
	protected int mainCount = 0;		//符合rt个数
	protected String classTextPath;		//class.txt路径
	protected CutListener listener;
	
	public void configure(String dectoryName, String classTextPath){
		this.dectoryName = dectoryName;
		this.classTextPath = classTextPath;
	}
	
	/**
	 * 
	 * 在预备的过程中添加监听 
	 * @see
	 * @param listener
	 * void
	 *
	 */
	public void addListener(CutListener listener) {
		this.listener = listener;
	}
	
	/**
	 * 剪切预备主要的rt和charsets 
	 * <p>	 
	 * @throws ResourceNullException
	 * void
	 * @since 1.0
	 */
	public abstract void cutPreStart() throws ResourceNullException;
	
	public abstract void logResultInfo();
	
	/**
	 * 按要求编辑每一行 
	 * <p>	 
	 * 要求：<br>
	 * 	1、查找并替换[Loaded和] 为空 <br>
	 * 	2、删除每一行from后面的字符包括from在内<br>
	 * 	3、查找.并替换为符合的项
	 * @param lineData		
	 * @return
	 * String
	 * @since 1.0
	 */
	protected String editLineData(String lineData){
		StringBuilder sBuilder = new StringBuilder();
		sBuilder.append(lineData);
		return sBuilder.substring(8, sBuilder.indexOf("from")).trim().replace(".", "/");
	}
	
	/*==============================模板方法===============================*/
	/**
	 * 写向目标的流
	 * <p>	 
	 * @return
	 * @throws ResourceNullException
	 * BufferedWriter
	 * @since 1.0
	 */
	protected BufferedWriter getTargetStream() throws ResourceNullException {
		return null;
	}
	
	/**
	 * 写向中间目标的流
	 * <p>	 
	 * @return
	 * @throws ResourceNullException
	 * BufferedWriter
	 * @since 1.0
	 */
	protected BufferedWriter getTempStream() throws ResourceNullException {
		return null;
	}
	/*==============================模板方法===============================*/
}
